package com.jilefojing.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.jilefojing.beans.enums.ItemTypeEnumForSource;
import com.jilefojing.beans.pojos.RHotTag;
import com.jilefojing.beans.pojos.enhanced.EnhancedRHotTag;
import com.jilefojing.beans.pojos.enhanced.EnhancedTag;
import com.jilefojing.beans.query.RHotTagQuery;
import com.jilefojing.beans.vo.Pagination;
import com.jilefojing.context.beans.vo.UserContext;
import com.jilefojing.dao.IRHotTagDao;
import com.jilefojing.service.IRHotTagService;
import com.jilefojing.service.ITagService;
import com.jilefojing.service.base.impl.BaseService;
import com.jilefojing.util.Detect;

/**
 * 
 * @author 作者 jgshun
 * @date 创建时间 2016年07月29日 13时54分55秒
 */
@Service
public class RHotTagService extends BaseService<RHotTag> implements IRHotTagService {
	@Autowired
	private IRHotTagDao rHotTagDao;
	@Autowired
	private ITagService tagService;

	@Override
	public Pagination<EnhancedRHotTag> getPagination(RHotTagQuery rHotTagQuery, Pagination<EnhancedRHotTag> pagination, UserContext userContext) {
		@SuppressWarnings("unchecked")
		Pagination<RHotTag> rHotTagPagination = rHotTagDao.getPagination(rHotTagQuery, pagination.copy());
		pagination.setCount(rHotTagPagination.getCount());
		if (!Detect.notEmpty(rHotTagPagination.getItems())) {
			return pagination;
		}
		pagination.setItems(this.conventRHotTags2EnhancedRHotTag(rHotTagPagination.getItems()));
		return pagination;
	}

	@Override
	public List<EnhancedRHotTag> conventRHotTags2EnhancedRHotTag(List<RHotTag> rHotTags) {
		List<EnhancedRHotTag> enhancedRHotTags = new ArrayList<EnhancedRHotTag>();
		for (RHotTag _RHotTag : rHotTags) {
			enhancedRHotTags.add(new EnhancedRHotTag(_RHotTag));
		}
		return enhancedRHotTags;
	}

	@Override
	public Pagination<EnhancedRHotTag> getPaginationByItemTypes(List<ItemTypeEnumForSource> itemTypes, Pagination<EnhancedRHotTag> pagination, UserContext userContext) {
		RHotTagQuery rHotTagQuery = new RHotTagQuery();
		rHotTagQuery.setItemTypes(itemTypes);
		return this.getPagination(rHotTagQuery, pagination, userContext);
	}

	@Override
	public List<EnhancedRHotTag> appendEnhancedTag2EnhancedRHotTags(List<EnhancedRHotTag> enhancedRHotTags, UserContext userContext) {
		List<Long> tagIds = new ArrayList<Long>();
		for (EnhancedRHotTag _EnhancedRHotTag : enhancedRHotTags) {
			if (_EnhancedRHotTag.getEnhancedTag() != null) {
				tagIds.add(_EnhancedRHotTag.getEnhancedTag().getId());
			}
		}
		if (Detect.notEmpty(tagIds)) {
			@SuppressWarnings("unchecked")
			List<EnhancedTag> enhancedTags = (List<EnhancedTag>) tagService.getEnhanceds(tagIds, userContext);
			if (Detect.notEmpty(enhancedTags)) {
				for (EnhancedRHotTag _EnhancedRHotTag : enhancedRHotTags) {
					if (_EnhancedRHotTag.getEnhancedTag() != null) {
						for (EnhancedTag _EnhancedTag : enhancedTags) {
							if (_EnhancedRHotTag.getEnhancedTag().getId() == _EnhancedTag.getId()) {
								_EnhancedRHotTag.setEnhancedTag(_EnhancedTag);
								break;
							}
						}
					}
				}
			}
		}
		return enhancedRHotTags;
	}

}
